	#include <iostream>
	#include <unistd.h>
	#include <string>
	#include <assert.h>
	#include <sys/types.h>
	using namespace  std;

	int main()
	{
		int pipefd[2] = {0}; // pipefd[0],是读端，0就如一张口；pipefd[1],是写端，1就如一只笔。
		int ret = pipe(pipefd);
		assert(ret != -1);
		pid_t pd = fork();
		// 假设父进程需要：写端。等fork后,再关闭[0]
		if (pd == 0)
		{  // 子进程创建成功
		// 假设子进程需要的是：读端
		close(pipefd[1]);
		cout << "chail success" << endl;
		char red[1024];
		// 循环接收并打印
		while (1)
		{
			read(pipefd[0], red, sizeof (red) -1);
			cout << red << "### " << "我是子进程,pid:" << getpid() << "父进程: " << getppid() << endl;
		}
		exit(1);

		}
		// 父进程， 功能：不断地向子进程发送数据
		close(pipefd[0]);
		string base_str = "我是父进程, 正在给你发消息:";
		char buffer[1024];   // 输出缓冲区
		int count = 0;
		while (1)
		{
			// 向缓冲区里，不断输入变换的消息
			int len = snprintf(buffer, sizeof buffer, "%s pid = [%d], 消息数量: %d", base_str.c_str(), getpid(), count++);
			// 向管道写入
			write(pipefd[1], buffer, len);
			sleep(3); // 一秒秒的刷新
		} 
		return 0;
	}




